/* eslint-disable no-undef */
import { getAreaInfo } from '../api/index'
// 本地存储的封装
const KEY_CITY = 'HKZF_CITY_INFO'
// 获取本地存储的城市信息
export const getLocalCity = () => {
   return JSON.parse(localStorage.getItem(KEY_CITY)) || {}
}
// 设置本地存储的城市信息
export const setLocalCity = (cityInfo) => {
    return localStorage.setItem(KEY_CITY,JSON.stringify(cityInfo))
 }
 // 更稳妥的写法，把全局变量 BMap 作为当前页面的局部变量，否则有时候会报错
const BMap = window.BMap
// 获取当前定位城市
export const getCurrentCity = () =>{
   // 业务分析：
  //    获取本地存储是否有城市信息
  //      1. 有，直接返回
  //      2. 没有，调用百度地图获取定位的城市，再返回
    const city = getLocalCity()
    if(city.label){
        // 直接返回城市信息 Promise 对象
        // return new Promise((reslove, reject) => {
        //   reslove(city)
        // })
        // 简便写法 - 更香
        return Promise.resolve(city)  // 简写
    } else {
        // 调用后返回 Promise 对象，包含城市信息
    return new Promise((reslove,reject) => {
        // 调用百度地图的浏览器定位功能
        const geolocation = new BMap.Geolocation();
        geolocation.getCurrentPosition(async(r) =>{
              // 根据定位城市，获取城市信息
            const AreaCord = await getAreaInfo(r.address.city)
            console.log('222222222',AreaCord.data.body);
            // 获取成功后，返回定位城市信息给调用者
            reslove(AreaCord.data.body)
            // 保存到本地
            setLocalCity(AreaCord.data.body)
        })      
    })
}

}